public class xuanZhuanZuiXiaoShuZi {
    /**
     * 有一个长度为 n 的非降序数组，比如[1,2,3,4,5]，将它进行旋转，
     * 即把一个数组最开始的若干个元素搬到数组的末尾，变成一个旋转数组，
     * 比如变成了[3,4,5,1,2]，或者[4,5,1,2,3]这样的。
     * 请问，给定这样一个旋转数组，求数组中的最小值。
     * 示例1
     * 输入： [3,4,5,1,2]
     * 返回值：1
     * @param array
     * @return
     */
    public int minNumberInRotateArray(int [] array) {
        int left = 0;
        int right = array.length;
        int mid = left + (right-left) / 2;
        while(left < right) {
            if (array[mid] > array[right]) {
                left = mid +1;
            }else if (array[mid] == array[right]) {
                right = right - 1;
            }else {
                right = mid;
            }
        }
        return array[right];
    }
}
